﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Metadados;
using MySql.Data.MySqlClient;
using System.Data;


namespace Dados
{
    public class DBUnidade
    {
        private ConexaoMYSQL objConexao = new ConexaoMYSQL();

        public bool incluir(Unidade obj)
        {
            bool blnRetorno = false;

            string strSql = "INSERT INTO Unidade (undCodigo,undDescricao,undSigla)" +
                         " VALUES (@p_undCodigo,@p_undDescricao,@p_undSigla)";

            List<MySqlParameter> objParams = new List<MySqlParameter>();
            objParams.Add(new MySqlParameter("@p_undCodigo", obj.undCodigo));
            objParams.Add(new MySqlParameter("@p_undDescricao", obj.undDescricao));
            objParams.Add(new MySqlParameter("@p_undSigla", obj.undSigla));

            blnRetorno = objConexao.executarComando(strSql, objParams);

            return blnRetorno;
        }

        public bool atualizar(Unidade obj)
        {
            bool blnRetorno = false;

            string strSql = "UPDATE Unidade SET undDescricao = @p_undDescricao, undSigla = @p_undSigla" +
                            " WHERE undCodigo = @p_undCodigo";

            List<MySqlParameter> objParams = new List<MySqlParameter>();
            objParams.Add(new MySqlParameter("@p_undDescricao", obj.undDescricao));
            objParams.Add(new MySqlParameter("@p_undSigla", obj.undSigla));
            objParams.Add(new MySqlParameter("@p_undCodigo", obj.undCodigo));

            blnRetorno = objConexao.executarComando(strSql, objParams);

            return blnRetorno;
        }

        public bool excluir(int p_undCodigo)
        {
            bool blnRetorno = false;

            string strSql = "DELETE FROM Unidade WHERE undCodigo = @p_undCodigo";

            List<MySqlParameter> objParams = new List<MySqlParameter>();
            objParams.Add(new MySqlParameter("@p_undCodigo", p_undCodigo));

            blnRetorno = objConexao.executarComando(strSql, objParams);

            return blnRetorno;
        }

        public List<Unidade> consultar(int p_undCodigo)
        {
            string strSql = "SELECT undCodigo, undDescricao, undSigla FROM Unidade " +
                            "WHERE undCodigo = @p_undCodigo";
            List<MySqlParameter> objParams = new List<MySqlParameter>();
            objParams.Add(new MySqlParameter("@p_undCodigo", p_undCodigo));

            DataTable objTbUnidades = objConexao.retornarTabela(strSql, objParams, "Unidade");

            List<Unidade> objUnidades = new List<Unidade>();
            foreach (DataRow row in objTbUnidades.Rows)
            {
                Unidade objUnidade = new Unidade();
                objUnidade.undCodigo = (int)row["undCodigo"];
                objUnidade.undDescricao = (string)row["undDescricao"];
                objUnidade.undSigla = (string)row["undSigla"];

                objUnidades.Add(objUnidade);
            }

            return objUnidades;
        }

        public List<Unidade> consultar()
        {
            string strSql = "SELECT undCodigo, undDescricao FROM Unidade";

            List<MySqlParameter> objParams = new List<MySqlParameter>();
            
            DataTable objTbUnidades = objConexao.retornarTabela(strSql, objParams, "Unidade");

            List<Unidade> objUnidades = new List<Unidade>();
            foreach (DataRow row in objTbUnidades.Rows)
            {
                Unidade objUnidade = new Unidade();
                objUnidade.undCodigo = (int)row["undCodigo"];
                objUnidade.undDescricao = (string)row["undDescricao"];

                objUnidades.Add(objUnidade);
            }

            return objUnidades;
        }

        public DataView listar(string p_proDescricao)
        {
            string strSql = "SELECT * FROM Unidade WHERE proCodigo <> 0";

            List<MySqlParameter> objParams = new List<MySqlParameter>();

            if (p_proDescricao.Trim() != "")
            {
                strSql += "AND proDescricao LIKE @p_proDescricao";
                objParams.Add(new MySqlParameter("@p_proDescricao", "%" + p_proDescricao + "%"));
            }

            DataTable objTbUnidades = new DataTable();

            objTbUnidades = objConexao.retornarTabela(strSql, objParams, "Unidade");

            return objTbUnidades.DefaultView;
        }
    }
}
